package com.jt.controller;


import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.service.ItemService;
import com.jt.vo.EasyUITable;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController //表示返回的数据都是json
@RequestMapping("/item")
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	/**
	 * 	分页查询商品信息
	 * URL: http://localhost:8091/item/query?page=1&rows=20
	 * 参数: page=1 页数   rows=20 行数
	 * 返回值:EasyUITable
	 */
	@RequestMapping("/query")
	public EasyUITable findItemByPage(int page, int rows){
	 	return itemService.findItemByPage(page,rows);
	}

	/**
	 * 业务需求:完成商品的新增
	 * url: http://localhost:8091/item/save
	 * 参数:整个表单提交 使用对象接收
	 * 返回值: 系统返回值对象
	 */
	@RequestMapping("/save")
	public SysResult saveItem(Item item, ItemDesc itemDesc){
		/*
			try的话,结构混乱,也不好看,所以采用全局异常处理类
			异常应该由Controller层进行接受
	 	*/
		/*try {//不能保证一定成功所以需要try一下
			itemService.saveItem(item);
			return SysResult.success();
		}catch (Exception e){
			e.printStackTrace();
			return SysResult.fail();
		}*/
		itemService.saveItem(item,itemDesc);
		return SysResult.success();
	}

	/**
	 * 实现商品更新
	 * url: /item/update
	 * 请求参数: 整个form都提交
	 * 返回值: SysResult
	 */
	@RequestMapping("/update")
	public SysResult updateItem(Item item,ItemDesc itemDesc){
		itemService.updateItem(item,itemDesc);
		return SysResult.success(item);
	}

	/**
	 * 	完成删除
	 * url: http://localhost:8091/item/delete
	 * 参数: 13123,123135
	 * 返回值: SysResult对象
	 * 参数的接受底层是Servlet的request对象实现的
	 * 注意事项:	方法中参数的名称必须与name属性的名称一致
	 */
	@RequestMapping("/delete")
	public SysResult deleteItem(Long...ids){
		itemService.deleteItem(ids);
		return new SysResult().success();

	}

	/**
	 * 完成商品的上架下架操作
	 * url: http://localhost:8091/item/updateStatus/2?ids=1474391982,1369278
	 * 参数: 1 2 代表商品的状态;ids=1,2,3
	 *
	 * SpringMVC底层将","作为分隔符转换为数组
	 */
	@RequestMapping("/updateStatus/{status}")
	public SysResult instockAndReshelf(@PathVariable Integer status, Long...ids){

		itemService.updateStatus(ids,status);
		return new SysResult().success();
	}
	/**
	 * 根据id,检索商品详情
	 * url: http://localhost:8091/item/query/item/desc/1474391959
	 * 参数: restFul风格获取数据
	 * 返回值: SysResult对象
	 */
	@RequestMapping("/query/item/desc/{itemId}")
	public SysResult findDescById(@PathVariable Integer itemId){
		ItemDesc itemDesc = itemService.findItemDescById(itemId);
		return SysResult.success(itemDesc);
	}
}
